#ifndef __BSP_SPEAKER_H
#define __BSP_SPEAKER_H
#include "stm32f4xx.h"

/* ---------------------------------- 引脚配置 ---------------------------------- */
#define SPEAKER_CLK  RCC_AHB1Periph_GPIOD
#define SPEAKER_PORT GPIOD
#define SPEAKER_PIN  GPIO_Pin_3

/* ---------------------------------- 操作宏定义 --------------------------------- */
#define Oneline_H GPIO_WriteBit(SPEAKER_PORT, SPEAKER_PIN, Bit_SET)   // 线上高电平
#define Oneline_L GPIO_WriteBit(SPEAKER_PORT, SPEAKER_PIN, Bit_RESET) // 线上低电平

/* -------------------------------- 语音播报模块命令 -------------------------------- */
// one_line指令
#define CLEAR           0x0A // 清零数字
#define MUSIC_SELECT    0x0B // 选取确认
#define VOLUME          0x0C // 设置音量
#define EQ              0x0D // 设置EQ
#define CYCLICAL_MODE   0x0E // 设置循环模式
#define CHANNEL         0x0F // 设置通道
#define INTER_CUT       0x10 // 设置插播曲目
#define PLAY            0x11 // 播放
#define PAUSE           0x12 // 暂停
#define STOP            0x13 // 停止
#define PREV_MUSIC      0x14 // 上一曲
#define NEXT_MUSIC      0x15 // 下一曲
#define PREV_CATALOGUE  0x16 // 上一目录
#define NEXT_CATALOGUE  0x17 // 下一目录
#define SD_CARD         0x18 // 选择SD卡
#define USB_FLASH_DISK  0x19 // 选择U盘
#define FLASH_DISK      0x1A // 选择FLASH
#define SYS_HIBERNATION 0x1B // 系统休眠
#define CLOSE_DOWN      0x1C // 结束播放

/* ---------------------------------- 函数声明 ---------------------------------- */
void GPIO_SPEAKER_Init(void);
void Speaker_SendData(unsigned char data);
void Speaker_MixCommand(unsigned char number, unsigned char command);
void Speaker_Broadcast(uint8_t num);

#endif